package com.pub;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class Unzip {
	private static final int buffer = 2048;

	public static void unZip(String path) {
		int count = -1;
		int index = -1;
		String savepath = "";
		boolean flag = false;

		File file = null;
		InputStream is = null;
		FileOutputStream fos = null;
		BufferedOutputStream bos = null;

		savepath = path.substring(0, path.lastIndexOf("\\")) + "\\";

		try {
			ZipFile zipFile = new ZipFile(path);

			Enumeration<?> entries = zipFile.entries();

			while (entries.hasMoreElements()) {
				byte buf[] = new byte[buffer];

				ZipEntry entry = (ZipEntry) entries.nextElement();

				String filename = entry.getName();
				index = filename.lastIndexOf("/");
				if (index > -1)
					filename = filename.substring(index + 1);

				filename = savepath + filename;

				file = new File(filename);
				file.createNewFile();

				is = zipFile.getInputStream(entry);

				fos = new FileOutputStream(file);
				bos = new BufferedOutputStream(fos, buffer);

				while ((count = is.read(buf)) > -1) {
					bos.write(buf, 0, count);
				}

				fos.close();

				is.close();
			}

			zipFile.close();

		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}

}
